/**
 * Prompt优化使用示例
 */

import { optimizePrompts, PromptLayers } from '../utils/prompt-optimizer';

// 华南理工案例的原始Prompt层级
const huananPromptLayers: PromptLayers = {
  template: "你是一位专业的新闻记者，擅长撰写客观公正的新闻报道。",
  
  system: `你是一个专业的内容创作助手，专门基于热点话题进行创作。

当前热点信息：
- 标题：华南理工的被撞女生，集齐了所有悲伤点
- 平台：weixin
- 热度：0
- 摘要：
- 发布时间：

评论分析：
- 总评论数：0
- 情感分布：正面：0，负面：0，中立：0
- 关键观点：暂无
- 热门评论：暂无

创作要求：
1. 基于提供的热点信息和评论分析进行创作
2. 保持客观性，避免偏见和不实信息
3. 确保内容的准确性和时效性
4. 遵循新闻伦理和社会责任
5. 语言表达清晰、逻辑严谨
6. 适当体现人文关怀
7. 避免煽动性和极端化表述`,

  smart: `针对当前热议的华南理工的被撞女生，集齐了所有悲伤点话题，撰写一篇新闻报道。

话题概述：暂无详细信息
请围绕核心观点和论据展开讨论，体现理性客观的写作风格。

创作要求：
1. 观点明确
2. 论证充分
3. 结构清晰
4. 语言流畅自然`,

  frontend: `请基于以下热点话题进行创作：

热点标题：华南理工的被撞女生，集齐了所有悲伤点
平台来源：weixin
热度排名：#1
话题摘要：

创作要求：
1. 深入分析热点背后的原因和影响
2. 提供独特的观点和见解
3. 内容要有深度，避免表面化
4. 适当引用相关数据和事例
5. 保持客观公正，多角度分析`,

  user: "请写一篇关于这个事件的新闻报道，要求客观真实，字数800-1200字。"
};

// 优化前后对比
export function demonstrateOptimization() {
  console.log('=== Prompt优化演示 ===\n');
  
  // 计算原始长度
  const originalPrompts = Object.values(huananPromptLayers).filter(Boolean);
  const originalTotal = originalPrompts.join('\n\n---\n\n');
  
  console.log('📊 原始Prompt统计:');
  console.log(`- Template层: ${huananPromptLayers.template?.length || 0} 字符`);
  console.log(`- System层: ${huananPromptLayers.system?.length || 0} 字符`);
  console.log(`- Smart层: ${huananPromptLayers.smart?.length || 0} 字符`);
  console.log(`- Frontend层: ${huananPromptLayers.frontend?.length || 0} 字符`);
  console.log(`- User层: ${huananPromptLayers.user?.length || 0} 字符`);
  console.log(`- 总长度: ${originalTotal.length} 字符\n`);
  
  // 优化处理
  const optimized = optimizePrompts(huananPromptLayers);
  
  console.log('✨ 优化结果:');
  console.log(`- 优化后长度: ${optimized.length} 字符`);
  console.log(`- 压缩率: ${((originalTotal.length - optimized.length) / originalTotal.length * 100).toFixed(1)}%`);
  console.log(`- 节省: ${originalTotal.length - optimized.length} 字符\n`);
  
  console.log('📝 优化后的Prompt:');
  console.log('---');
  console.log(optimized);
  console.log('---\n');
  
  return {
    original: originalTotal,
    optimized: optimized,
    stats: {
      originalLength: originalTotal.length,
      optimizedLength: optimized.length,
      compressionRatio: (originalTotal.length - optimized.length) / originalTotal.length,
      saved: originalTotal.length - optimized.length
    }
  };
}

// 不同场景的优化示例
export function testDifferentScenarios() {
  console.log('🧪 测试不同场景的优化效果\n');
  
  // 场景1: 高重复度
  const highDuplicationLayers: PromptLayers = {
    system: "你是专业写手。创作要求：1. 内容准确 2. 语言流畅",
    smart: "撰写文章。创作要求：1. 内容准确 2. 结构清晰 3. 语言流畅",
    frontend: "创作要求：1. 内容准确 2. 观点明确 3. 语言流畅",
    user: "请写文章，要求内容准确，语言流畅"
  };
  
  const scenario1 = optimizePrompts(highDuplicationLayers);
  console.log('场景1 - 高重复度优化:');
  console.log(scenario1);
  console.log('');
  
  // 场景2: 低重复度
  const lowDuplicationLayers: PromptLayers = {
    template: "你是技术专家",
    system: "当前任务：API文档编写",
    smart: "输出格式：Markdown",
    user: "请包含代码示例"
  };
  
  const scenario2 = optimizePrompts(lowDuplicationLayers);
  console.log('场景2 - 低重复度优化:');
  console.log(scenario2);
  console.log('');
}

// 性能测试
export function performanceTest() {
  console.log('⚡ 性能测试\n');
  
  const iterations = 1000;
  const start = performance.now();
  
  for (let i = 0; i < iterations; i++) {
    optimizePrompts(huananPromptLayers);
  }
  
  const end = performance.now();
  const avgTime = (end - start) / iterations;
  
  console.log(`执行${iterations}次优化:`);
  console.log(`- 总耗时: ${(end - start).toFixed(2)}ms`);
  console.log(`- 平均耗时: ${avgTime.toFixed(3)}ms`);
  console.log(`- 每秒处理: ${(1000 / avgTime).toFixed(0)}次`);
}

// 运行所有示例
if (typeof window === 'undefined') {
  // Node.js环境下运行
  demonstrateOptimization();
  testDifferentScenarios();
  performanceTest();
}
